Organizations increasingly generate and use large amounts of data. In the course of managing its data, an organization may wish to back up this data while maintaining uninterrupted access to the same.
A consistent backup may require that all data within a backup reflect the state of the backed-up data at a given point in time. In order to provide a consistent backup of a volume of data (as well as uninterrupted access to write to the volume), a backup system may utilize a space-saving snapshot. Traditional technologies may create a space-saving snapshot of a volume by making a copy of a block of data on the volume whenever that block of data is about to be overwritten. Attempts to read from the snapshot may then be either directly fulfilled from the volume (if the corresponding block on the volume has not changed since the snapshot) or fulfilled from a copied block of data created for the snapshot.
In order to locate copied blocks of data when fulfilling read requests for a snapshot, traditional technologies may maintain a map that identifies the location where each copied block of data is stored. Unfortunately, maintaining such a map may degrade system performance. For example, maintaining a persistent snapshot block location map may increase the I/O load of a system. Additionally, if a cluster of systems require access to the snapshot, then synchronizing the map across various nodes within the cluster may increase I/O latency and network traffic. Accordingly, the instant disclosure identifies a need for efficiently creating space-saving snapshots.